
package com.hlkj.pay.vo.merchant.req.access;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import com.hlkj.pay.enums.MerchantEnum;
import com.hlkj.pay.vo.BaseReq;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 商户进件表
 * 
 * @TableName t_merchant_access_info
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MerchantAccessReq extends BaseReq {

    /**
     * 商户类型，1=个人，2=企业
     */
    @Schema(description = "进件id 重新提交的时候传")
    private Long id;

    /**
     * 服务商编码
     */
    // @NotBlank(message = "[服务商编码]不能为空")
    @Schema(description = "服务商编码")
    private String providerCode;

    /**
     * 审核状态，审核状态，0：草稿 1：鉴权中 2：已提交，等待平台审核，3：系统自动审核中，4：系统审核通过渠道审核中，5：平台审核中，6：待签约，7：签约中，8：待配置，9：配置中，10：审核完成，11：审核驳回
     */
    @Schema(description ="审核状态 0：草稿 1：鉴权中 2：已提交，等待平台审核，3：系统自动审核中，4：系统审核通过渠道审核中，5：平台审核中，6：待签约，7：签约中，8：待配置，9：配置中，10：审核完成，11：审核驳回")
    private MerchantEnum.ACCESS_STATUS status;

    /**
     * 服务商编码
     */
    // @NotBlank(message = "[商户号]不能为空")
    @Schema(description = "商户号")
    private String sn;

    /**
     * 通道编码
     */
    // @NotBlank(message = "[通道编码]不能为空")
    @Schema(description = "通道编码")
    private String channelCode;

    @Schema(description = "商户信息")
    @NotNull(message = "[商户信息]不能为空")
    @Valid
    private MerchantAccessInfoReq merchantAccessInfo;

    @Schema(description = "经营信息")
    @NotNull(message = "[经营信息]不能为空")
    @Valid
    private MerchantAccessBusinessReq merchantAccessBusiness;

    @Schema(description = "商户结算信息")
    @NotNull(message = "[结算信息]不能为空")
    @Valid
    private MerchantAccessCardReq merchantAccessCard;

    /**
     * 数据来源，1=手动录入，2=复制，3=开放接口
     * @see MerchantEnum.SOURCE_FROM
     */
    @Schema(description = "数据来源")
    private Integer sourceFrom;
}
